package XueXi;

public class SanYuan_YunSuanFu {
    public static void main(String[] args) {
        /*
        三元运算
            基本语法
                条件表达式？ 表达式1：表达式2；
            运算规则
                1.如果条件表达式为true,运算后的结果是表达式1；
                2.如果条件表达式为false,运算后的结果是表达式2；
         */

        int a = 10;
        int b = 99;
        int resule = a > b ? a++: b++;// 99 a > b 为 false 返回 b++,先返回b的值，然后b + 1  b=100
        System.out.println(resule);

        int resule1 = a < b ? a++: b++;//10 a < b  为true 返回 a++,先返回a的值，然后a + 1  a=11
        System.out.println(resule1);


        int resule2 = a > b ? ++a: ++b;//101 a > b 为 false 先b + 1 然后返回b的值
        System.out.println(resule2);

        int resule3 = a < b ? ++a: ++b;//12 a < b  为true 先a+1 然后返回a的值
        System.out.println(resule3);

        /*
        表达式1和表达式2要为可以赋给接收变量的类型（或者可以自动转换，或者可以进行强转）
         */
        int c = 5;
        int d = 10;
        int e = c > d ?(int) 5.5 :(int) 10.1;//如果数据类型不同会报错，需要强转
        double f = c > d ? c : d + 3;//int 类型的值可以自动转换成 double 类型的值
        System.out.println(e);
        System.out.println(f);

        int n1 = 123;
        int n2 = 234;
        int n3 = 12;
        int max = n1 > n2 ? n1 : n2;
        int max1 = max > n3 ? max : n3;
        System.out.println("最大数="+ max1);

        int max3 = (n1 > n2 ? n1 : n2) > n3 ? (n1 > n2 ? n1 : n2) : n3;
        System.out.println("最大数="+ max3);
    }
}
